package com.dhecp.project.system.mapper;

import com.dhecp.core.layui.TreeDataModel;
import com.dhecp.core.layui.TreeSelectDataModel;
import com.dhecp.core.genericDao.GenericDao;
import com.dhecp.project.system.domain.SysDataFolder;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;



/**
 * 资料文件夹
 * @author DH-Xxj
 * @version 2019年9月19日
 */
public interface SysDataFolderMapper extends GenericDao<SysDataFolder, String> {
	
	/**
	 * 通过guid查询单条记录
	 * @param guid
	 * @return DataFolder
	 * @author DH-Xxj
	 */
	SysDataFolder findDataFolderByGuid(@Param("guid") String guid);

	/**
	 * 通过orgPathAll查询单条记录
	 * @param orgPathAll
	 * @return DataFolder
	 * @author DH-Xxj
	 */
	SysDataFolder findDataFolderByOrgPathAll(@Param("orgPathAll") String orgPathAll);
	
	/**
	 * 通过OrgPathAll查询上级文件夹单条记录
	 * @param orgPathAll
	 * @return DataFolder
	 * @author DH-Xxj
	 */
	SysDataFolder findParentDataFolderByOrgPathAll(@Param("orgPathAll") String orgPathAll);
	/**
	 * 查询指定节点及其子节点
	 * @param orgPathAll
	 * @return List-SysDataFolder
	 * @author DH-Xxj
	 */
	List<SysDataFolder> findDataFolderChilds(@Param("orgPathAll") String orgPathAll);
	
	/**
	 * 直接查询资料文件夹表的数据
	 * @param params
	 * @return List
	 * @author DH-Xxj
	 */
	List<SysDataFolder> findDataFolder(Map<String, Object> params);
	
	/**
	 * 部门列表
	 * @param params
	 * @return List
	 * @author kimiloo
	 */
	List<SysDataFolder> findDeptInfo(Map<String, Object> params);
	
	/**
	 * 获取资料文件夹树
	 * @param params
	 * @return List
	 * @author DH-Xxj
	 */
	List<TreeDataModel> findDataFolderTree(Map<String, Object> params);

	/**
	 * 获取资料文件夹树（含复选框）
	 * @param params
	 * @return List - TreeSelectDataModel
	 * @author DH-Xxj
	 */
	List<TreeSelectDataModel> findDataFolderTreeSelect(Map<String, Object> params);
	
	/**
	 * 获取排除用户的资料文件夹树（含复选框）
	 * @param params
	 * @return List - TreeSelectDataModel
	 * @author DH-Xxj
	 */
	List<TreeSelectDataModel> findDataFolderTreeSelectNoUser(Map<String, Object> params);
	
	/**
	 * 查询调入资料文件夹对象
	 * @param params
	 * @return List - SysDataFolder
	 * @author DH-Xxj
	 */
	List<SysDataFolder> findDataFolderObject(Map<String, Object> params);
	
	/**
	 * 新增文件夹节点（公司、部门）
	 * @param params
	 * 		必要参数：pguid（上级文件夹唯一值guid，顶级默认值（'root'））
	 * 		必要参数：folderName（新增文件夹名称）
	 * 		必要参数：createUser（新增员工编号）
	 * @return
	 * @author DH-Xxj
	 */
	int insertDataFolder(Map<String, Object> params);
	
	/**
	 * 通过orgPathAll删除文件夹及其子树
	 * @param params
	 * 		必要参数：orgPathAll（要删除的文件夹全路径）
	 * @return
	 * @author DH-Xxj
	 */
	int deleteSubtreeByOrgPathAll(Map<String, Object> params);

	/**
	 * 通过guid修改文件夹名称
	 * @param guid 必要参数：要修改的文件夹唯一值
	 * @param folderName 必要参数：修改后的文件夹名称
	 * @param updateUser 必要参数：修改人
	 * @param updateTime 必要参数：修改日期
	 * @return
	 * @author DH-Xxj
	 */
	int updateFolderNameByGuid(Map<String, Object> params);
	
	/**
	 * 通过guid修改文件夹行号
	 * @param SysDataFolder 实体
	 * @return
	 * @author DH-Xxj
	 */
	int updateIidByGuid(SysDataFolder dataFolderInfo);
	
	/**
	 * 通过guid修改文件夹管理者
	 * @param params
	 * 		必要参数：guid（要修改的文件夹唯一值）
	 * 		必要参数：folerManagers（修改后的文件夹管理者字符串，格示示例：[0000],[1001],[1002]）
	 * @return
	 * @author DH-Xxj
	 */
	int updateOrgManagersByGuid(Map<String, Object> params);
	
	

}
